home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / ia64 / include / asm / native / inst.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  4.1 KB  |  182 lines

  1. /******************************************************************************
  2.  * arch/ia64/include/asm/native/inst.h
  3.  *
  4.  * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
  5.  *                    VA Linux Systems Japan K.K.
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License as published by
  9.  * the Free Software Foundation; either version 2 of the License, or
  10.  * (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20.  *
  21.  */
  22.  
  23. #define DO_SAVE_MIN        IA64_NATIVE_DO_SAVE_MIN
  24.  
  25. #define __paravirt_switch_to            ia64_native_switch_to
  26. #define __paravirt_leave_syscall        ia64_native_leave_syscall
  27. #define __paravirt_work_processed_syscall    ia64_native_work_processed_syscall
  28. #define __paravirt_leave_kernel            ia64_native_leave_kernel
  29. #define __paravirt_pending_syscall_end        ia64_work_pending_syscall_end
  30. #define __paravirt_work_processed_syscall_target \
  31.                         ia64_work_processed_syscall
  32.  
  33. #ifdef CONFIG_PARAVIRT_GUEST_ASM_CLOBBER_CHECK
  34. # define PARAVIRT_POISON    0xdeadbeefbaadf00d
  35. # define CLOBBER(clob)                \
  36.     ;;                    \
  37.     movl clob = PARAVIRT_POISON;        \
  38.     ;;
  39. # define CLOBBER_PRED(pred_clob)        \
  40.     ;;                    \
  41.     cmp.eq pred_clob, p0 = r0, r0        \
  42.     ;;
  43. #else
  44. # define CLOBBER(clob)            /* nothing */
  45. # define CLOBBER_PRED(pred_clob)    /* nothing */
  46. #endif
  47.  
  48. #define MOV_FROM_IFA(reg)    \
  49.     mov reg = cr.ifa
  50.  
  51. #define MOV_FROM_ITIR(reg)    \
  52.     mov reg = cr.itir
  53.  
  54. #define MOV_FROM_ISR(reg)    \
  55.     mov reg = cr.isr
  56.  
  57. #define MOV_FROM_IHA(reg)    \
  58.     mov reg = cr.iha
  59.  
  60. #define MOV_FROM_IPSR(pred, reg)    \
  61. (pred)    mov reg = cr.ipsr
  62.  
  63. #define MOV_FROM_IIM(reg)    \
  64.     mov reg = cr.iim
  65.  
  66. #define MOV_FROM_IIP(reg)    \
  67.     mov reg = cr.iip
  68.  
  69. #define MOV_FROM_IVR(reg, clob)    \
  70.     mov reg = cr.ivr    \
  71.     CLOBBER(clob)
  72.  
  73. #define MOV_FROM_PSR(pred, reg, clob)    \
  74. (pred)    mov reg = psr            \
  75.     CLOBBER(clob)
  76.  
  77. #define MOV_TO_IFA(reg, clob)    \
  78.     mov cr.ifa = reg    \
  79.     CLOBBER(clob)
  80.  
  81. #define MOV_TO_ITIR(pred, reg, clob)    \
  82. (pred)    mov cr.itir = reg        \
  83.     CLOBBER(clob)
  84.  
  85. #define MOV_TO_IHA(pred, reg, clob)    \
  86. (pred)    mov cr.iha = reg        \
  87.     CLOBBER(clob)
  88.  
  89. #define MOV_TO_IPSR(pred, reg, clob)        \
  90. (pred)    mov cr.ipsr = reg            \
  91.     CLOBBER(clob)
  92.  
  93. #define MOV_TO_IFS(pred, reg, clob)    \
  94. (pred)    mov cr.ifs = reg        \
  95.     CLOBBER(clob)
  96.  
  97. #define MOV_TO_IIP(reg, clob)    \
  98.     mov cr.iip = reg    \
  99.     CLOBBER(clob)
  100.  
  101. #define MOV_TO_KR(kr, reg, clob0, clob1)    \
  102.     mov IA64_KR(kr) = reg            \
  103.     CLOBBER(clob0)                \
  104.     CLOBBER(clob1)
  105.  
  106. #define ITC_I(pred, reg, clob)    \
  107. (pred)    itc.i reg        \
  108.     CLOBBER(clob)
  109.  
  110. #define ITC_D(pred, reg, clob)    \
  111. (pred)    itc.d reg        \
  112.     CLOBBER(clob)
  113.  
  114. #define ITC_I_AND_D(pred_i, pred_d, reg, clob)    \
  115. (pred_i) itc.i reg;                \
  116. (pred_d) itc.d reg                \
  117.     CLOBBER(clob)
  118.  
  119. #define THASH(pred, reg0, reg1, clob)        \
  120. (pred)    thash reg0 = reg1            \
  121.     CLOBBER(clob)
  122.  
  123. #define SSM_PSR_IC_AND_DEFAULT_BITS_AND_SRLZ_I(clob0, clob1)        \
  124.     ssm psr.ic | PSR_DEFAULT_BITS                    \
  125.     CLOBBER(clob0)                            \
  126.     CLOBBER(clob1)                            \
  127.     ;;                                \
  128.     srlz.i /* guarantee that interruption collectin is on */    \
  129.     ;;
  130.  
  131. #define SSM_PSR_IC_AND_SRLZ_D(clob0, clob1)    \
  132.     ssm psr.ic                \
  133.     CLOBBER(clob0)                \
  134.     CLOBBER(clob1)                \
  135.     ;;                    \
  136.     srlz.d
  137.  
  138. #define RSM_PSR_IC(clob)    \
  139.     rsm psr.ic        \
  140.     CLOBBER(clob)
  141.  
  142. #define SSM_PSR_I(pred, pred_clob, clob)    \
  143. (pred)    ssm psr.i                \
  144.     CLOBBER(clob)                \
  145.     CLOBBER_PRED(pred_clob)
  146.  
  147. #define RSM_PSR_I(pred, clob0, clob1)    \
  148. (pred)    rsm psr.i            \
  149.     CLOBBER(clob0)            \
  150.     CLOBBER(clob1)
  151.  
  152. #define RSM_PSR_I_IC(clob0, clob1, clob2)    \
  153.     rsm psr.i | psr.ic            \
  154.     CLOBBER(clob0)                \
  155.     CLOBBER(clob1)                \
  156.     CLOBBER(clob2)
  157.  
  158. #define RSM_PSR_DT        \
  159.     rsm psr.dt
  160.  
  161. #define SSM_PSR_DT_AND_SRLZ_I    \
  162.     ssm psr.dt        \
  163.     ;;            \
  164.     srlz.i
  165.  
  166. #define BSW_0(clob0, clob1, clob2)    \
  167.     bsw.0                \
  168.     CLOBBER(clob0)            \
  169.     CLOBBER(clob1)            \
  170.     CLOBBER(clob2)
  171.  
  172. #define BSW_1(clob0, clob1)    \
  173.     bsw.1            \
  174.     CLOBBER(clob0)        \
  175.     CLOBBER(clob1)
  176.  
  177. #define COVER    \
  178.     cover
  179.  
  180. #define RFI    \
  181.     rfi
  182.